{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>230.1</td>\n",
       "      <td>37.8</td>\n",
       "      <td>69.2</td>\n",
       "      <td>22.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>44.5</td>\n",
       "      <td>39.3</td>\n",
       "      <td>45.1</td>\n",
       "      <td>10.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>17.2</td>\n",
       "      <td>45.9</td>\n",
       "      <td>69.3</td>\n",
       "      <td>9.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>151.5</td>\n",
       "      <td>41.3</td>\n",
       "      <td>58.5</td>\n",
       "      <td>18.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>180.8</td>\n",
       "      <td>10.8</td>\n",
       "      <td>58.4</td>\n",
       "      <td>12.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0     TV  radio  newspaper  sales\n",
       "0           1  230.1   37.8       69.2   22.1\n",
       "1           2   44.5   39.3       45.1   10.4\n",
       "2           3   17.2   45.9       69.3    9.3\n",
       "3           4  151.5   41.3       58.5   18.5\n",
       "4           5  180.8   10.8       58.4   12.9"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>230.1</td>\n",
       "      <td>37.8</td>\n",
       "      <td>69.2</td>\n",
       "      <td>22.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>44.5</td>\n",
       "      <td>39.3</td>\n",
       "      <td>45.1</td>\n",
       "      <td>10.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>17.2</td>\n",
       "      <td>45.9</td>\n",
       "      <td>69.3</td>\n",
       "      <td>9.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>151.5</td>\n",
       "      <td>41.3</td>\n",
       "      <td>58.5</td>\n",
       "      <td>18.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>180.8</td>\n",
       "      <td>10.8</td>\n",
       "      <td>58.4</td>\n",
       "      <td>12.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0     TV  radio  newspaper  sales\n",
       "0           1  230.1   37.8       69.2   22.1\n",
       "1           2   44.5   39.3       45.1   10.4\n",
       "2           3   17.2   45.9       69.3    9.3\n",
       "3           4  151.5   41.3       58.5   18.5\n",
       "4           5  180.8   10.8       58.4   12.9"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn as datasets\n",
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "ad = pd.read_csv('Advertising.csv')\n",
    "ad.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>230.1</td>\n",
       "      <td>37.8</td>\n",
       "      <td>69.2</td>\n",
       "      <td>22.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>44.5</td>\n",
       "      <td>39.3</td>\n",
       "      <td>45.1</td>\n",
       "      <td>10.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>17.2</td>\n",
       "      <td>45.9</td>\n",
       "      <td>69.3</td>\n",
       "      <td>9.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>151.5</td>\n",
       "      <td>41.3</td>\n",
       "      <td>58.5</td>\n",
       "      <td>18.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>180.8</td>\n",
       "      <td>10.8</td>\n",
       "      <td>58.4</td>\n",
       "      <td>12.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      TV  radio  newspaper  sales\n",
       "0  230.1   37.8       69.2   22.1\n",
       "1   44.5   39.3       45.1   10.4\n",
       "2   17.2   45.9       69.3    9.3\n",
       "3  151.5   41.3       58.5   18.5\n",
       "4  180.8   10.8       58.4   12.9"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>230.1</td>\n",
       "      <td>37.8</td>\n",
       "      <td>69.2</td>\n",
       "      <td>22.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>44.5</td>\n",
       "      <td>39.3</td>\n",
       "      <td>45.1</td>\n",
       "      <td>10.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>17.2</td>\n",
       "      <td>45.9</td>\n",
       "      <td>69.3</td>\n",
       "      <td>9.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>151.5</td>\n",
       "      <td>41.3</td>\n",
       "      <td>58.5</td>\n",
       "      <td>18.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>180.8</td>\n",
       "      <td>10.8</td>\n",
       "      <td>58.4</td>\n",
       "      <td>12.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      TV  radio  newspaper  sales\n",
       "0  230.1   37.8       69.2   22.1\n",
       "1   44.5   39.3       45.1   10.4\n",
       "2   17.2   45.9       69.3    9.3\n",
       "3  151.5   41.3       58.5   18.5\n",
       "4  180.8   10.8       58.4   12.9"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad1 = ad.drop('Unnamed: 0', axis = 'columns')\n",
    "ad1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TV           False\n",
       "radio        False\n",
       "newspaper    False\n",
       "sales        False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "TV           False\n",
       "radio        False\n",
       "newspaper    False\n",
       "sales        False\n",
       "dtype: bool"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad1.isnull().any(axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [TV, radio, newspaper, sales]\n",
       "Index: []"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Empty DataFrame\n",
       "Columns: [TV, radio, newspaper, sales]\n",
       "Index: []"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad1.loc[ad1.isnull().any(axis=1),:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "x = ad1[['TV', 'radio', 'newspaper']]\n",
    "y = ad1['sales']\n",
    "plt.plot(x, y, \"o\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1309e1be0>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1309e1be0>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "X = ad1[['TV', 'radio', 'newspaper']]\n",
    "corrmat = X.corr()\n",
    "plt.subplots(figsize=(12,9))\n",
    "sns.heatmap(corrmat, vmax=0.9, square=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.967425</td>\n",
       "      <td>0.979066</td>\n",
       "      <td>1.774493</td>\n",
       "      <td>1.548168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.194379</td>\n",
       "      <td>1.080097</td>\n",
       "      <td>0.667903</td>\n",
       "      <td>-0.694304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.512360</td>\n",
       "      <td>1.524637</td>\n",
       "      <td>1.779084</td>\n",
       "      <td>-0.905135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.051919</td>\n",
       "      <td>1.214806</td>\n",
       "      <td>1.283185</td>\n",
       "      <td>0.858177</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.393196</td>\n",
       "      <td>-0.839507</td>\n",
       "      <td>1.278593</td>\n",
       "      <td>-0.215143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         TV     radio  newspaper     sales\n",
       "0  0.967425  0.979066   1.774493  1.548168\n",
       "1 -1.194379  1.080097   0.667903 -0.694304\n",
       "2 -1.512360  1.524637   1.779084 -0.905135\n",
       "3  0.051919  1.214806   1.283185  0.858177\n",
       "4  0.393196 -0.839507   1.278593 -0.215143"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.967425</td>\n",
       "      <td>0.979066</td>\n",
       "      <td>1.774493</td>\n",
       "      <td>1.548168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.194379</td>\n",
       "      <td>1.080097</td>\n",
       "      <td>0.667903</td>\n",
       "      <td>-0.694304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.512360</td>\n",
       "      <td>1.524637</td>\n",
       "      <td>1.779084</td>\n",
       "      <td>-0.905135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.051919</td>\n",
       "      <td>1.214806</td>\n",
       "      <td>1.283185</td>\n",
       "      <td>0.858177</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.393196</td>\n",
       "      <td>-0.839507</td>\n",
       "      <td>1.278593</td>\n",
       "      <td>-0.215143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         TV     radio  newspaper     sales\n",
       "0  0.967425  0.979066   1.774493  1.548168\n",
       "1 -1.194379  1.080097   0.667903 -0.694304\n",
       "2 -1.512360  1.524637   1.779084 -0.905135\n",
       "3  0.051919  1.214806   1.283185  0.858177\n",
       "4  0.393196 -0.839507   1.278593 -0.215143"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad1_std = ((ad1 - ad1.mean(0)) / ad1.std(0))\n",
    "ad1_std.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>83.0575</td>\n",
       "      <td>14.536</td>\n",
       "      <td>38.646</td>\n",
       "      <td>8.0775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-102.5425</td>\n",
       "      <td>16.036</td>\n",
       "      <td>14.546</td>\n",
       "      <td>-3.6225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-129.8425</td>\n",
       "      <td>22.636</td>\n",
       "      <td>38.746</td>\n",
       "      <td>-4.7225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.4575</td>\n",
       "      <td>18.036</td>\n",
       "      <td>27.946</td>\n",
       "      <td>4.4775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>33.7575</td>\n",
       "      <td>-12.464</td>\n",
       "      <td>27.846</td>\n",
       "      <td>-1.1225</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         TV   radio  newspaper   sales\n",
       "0   83.0575  14.536     38.646  8.0775\n",
       "1 -102.5425  16.036     14.546 -3.6225\n",
       "2 -129.8425  22.636     38.746 -4.7225\n",
       "3    4.4575  18.036     27.946  4.4775\n",
       "4   33.7575 -12.464     27.846 -1.1225"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TV</th>\n",
       "      <th>radio</th>\n",
       "      <th>newspaper</th>\n",
       "      <th>sales</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>83.0575</td>\n",
       "      <td>14.536</td>\n",
       "      <td>38.646</td>\n",
       "      <td>8.0775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-102.5425</td>\n",
       "      <td>16.036</td>\n",
       "      <td>14.546</td>\n",
       "      <td>-3.6225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-129.8425</td>\n",
       "      <td>22.636</td>\n",
       "      <td>38.746</td>\n",
       "      <td>-4.7225</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.4575</td>\n",
       "      <td>18.036</td>\n",
       "      <td>27.946</td>\n",
       "      <td>4.4775</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>33.7575</td>\n",
       "      <td>-12.464</td>\n",
       "      <td>27.846</td>\n",
       "      <td>-1.1225</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         TV   radio  newspaper   sales\n",
       "0   83.0575  14.536     38.646  8.0775\n",
       "1 -102.5425  16.036     14.546 -3.6225\n",
       "2 -129.8425  22.636     38.746 -4.7225\n",
       "3    4.4575  18.036     27.946  4.4775\n",
       "4   33.7575 -12.464     27.846 -1.1225"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ad1_ctl=ad1 - ad1.mean(0)\n",
    "ad1_ctl.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_std=ad1_std[['TV', 'radio', 'newspaper']]\n",
    "Y_ctl=ad1_ctl['sales']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X = ad1[['TV', 'radio', 'newspaper']]\n",
    "Y = ad1['sales']\n",
    "X_trainstd, X_teststd, y_trainctl, y_testctl = train_test_split(X_std, Y_ctl, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
      "             estimator=Ridge(alpha=1.0, copy_X=True, fit_intercept=True,\n",
      "                             max_iter=None, normalize=False, random_state=None,\n",
      "                             solver='auto', tol=0.001),\n",
      "             iid='warn', n_jobs=None,\n",
      "             param_grid={'alpha': array([2.e+01, 1.e+01, 5.e+00, 1.e+00, 1.e-02, 1.e-03, 1.e-04, 1.e-08,\n",
      "       1.e-10, 1.e-15])},\n",
      "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
      "             scoring=None, verbose=0)\n",
      "0.8596628001434379\n",
      "1.0\n",
      "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
      "             estimator=Ridge(alpha=1.0, copy_X=True, fit_intercept=True,\n",
      "                             max_iter=None, normalize=False, random_state=None,\n",
      "                             solver='auto', tol=0.001),\n",
      "             iid='warn', n_jobs=None,\n",
      "             param_grid={'alpha': array([2.e+01, 1.e+01, 5.e+00, 1.e+00, 1.e-02, 1.e-03, 1.e-04, 1.e-08,\n",
      "       1.e-10, 1.e-15])},\n",
      "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
      "             scoring=None, verbose=0)\n",
      "0.8596628001434379\n",
      "1.0\n"
     ]
    }
   ],
   "source": [
    "alphas = np.array([20,10,5,1,1e-2,1e-3,1e-4,1e-8,1e-10,1e-15])\n",
    "model1 = Ridge()\n",
    "grid1 = GridSearchCV(estimator=model1, param_grid=dict(alpha=alphas), cv=5)\n",
    "grid1.fit(X_trainstd, y_trainctl)\n",
    "print(grid1)\n",
    "print(grid1.best_score_)\n",
    "print(grid1.best_estimator_.alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R^2 for training set:\n",
      "0.8956660080243806\n",
      "--------------------------------------------------\n",
      "R^2 for test set: \n",
      "0.898776512641748\n",
      "__________________________________________________\n",
      "Rss: 127.80\n",
      "R^2 for training set:\n",
      "0.8956660080243806\n",
      "--------------------------------------------------\n",
      "R^2 for test set: \n",
      "0.898776512641748\n",
      "__________________________________________________\n",
      "Rss: 127.80\n"
     ]
    }
   ],
   "source": [
    "ridge1 = Ridge(alpha=1.0)\n",
    "ridge1.fit(X_trainstd, y_trainctl)\n",
    "print (\"R^2 for training set:\"),\n",
    "print (ridge1.score(X_trainstd, y_trainctl))\n",
    "\n",
    "print ('-'*50)\n",
    "\n",
    "print (\"R^2 for test set: \"),\n",
    "print (ridge1.score(X_teststd, y_testctl))\n",
    "\n",
    "print ('_'*50)\n",
    "\n",
    "print (\"Rss: %.2f\" % np.sum((ridge1.predict(X_teststd) - y_testctl) ** 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3.81630187, 2.78967101, 0.06810947])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "array([3.81630187, 2.78967101, 0.06810947])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge1.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_form(model, colnames):\n",
    "    result = pd.DataFrame(model.coef_).transpose()\n",
    "    result.columns = colnames\n",
    "    result['intercept'] = model.intercept_\n",
    "    result = result.transpose()\n",
    "    result.columns = ['coefficient']\n",
    "    return result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coefficient</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>TV</th>\n",
       "      <td>3.816302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>radio</th>\n",
       "      <td>2.789671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>newspaper</th>\n",
       "      <td>0.068109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>intercept</th>\n",
       "      <td>0.020052</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           coefficient\n",
       "TV            3.816302\n",
       "radio         2.789671\n",
       "newspaper     0.068109\n",
       "intercept     0.020052"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coefficient</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>TV</th>\n",
       "      <td>3.816302</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>radio</th>\n",
       "      <td>2.789671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>newspaper</th>\n",
       "      <td>0.068109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>intercept</th>\n",
       "      <td>0.020052</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           coefficient\n",
       "TV            3.816302\n",
       "radio         2.789671\n",
       "newspaper     0.068109\n",
       "intercept     0.020052"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "colnames = ['TV', 'radio', 'newspaper']\n",
    "get_form(ridge1, colnames)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
      "             estimator=Lasso(alpha=1.0, copy_X=True, fit_intercept=True,\n",
      "                             max_iter=1000, normalize=False, positive=False,\n",
      "                             precompute=False, random_state=None,\n",
      "                             selection='cyclic', tol=0.0001, warm_start=False),\n",
      "             iid='warn', n_jobs=None,\n",
      "             param_grid={'alpha': array([2.e+01, 1.e+01, 5.e+00, 1.e+00, 1.e-02, 1.e-03, 1.e-04, 1.e-08,\n",
      "       1.e-10, 1.e-15])},\n",
      "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
      "             scoring=None, verbose=0)\n",
      "0.8599454550284076\n",
      "0.01\n",
      "GridSearchCV(cv=5, error_score='raise-deprecating',\n",
      "             estimator=Lasso(alpha=1.0, copy_X=True, fit_intercept=True,\n",
      "                             max_iter=1000, normalize=False, positive=False,\n",
      "                             precompute=False, random_state=None,\n",
      "                             selection='cyclic', tol=0.0001, warm_start=False),\n",
      "             iid='warn', n_jobs=None,\n",
      "             param_grid={'alpha': array([2.e+01, 1.e+01, 5.e+00, 1.e+00, 1.e-02, 1.e-03, 1.e-04, 1.e-08,\n",
      "       1.e-10, 1.e-15])},\n",
      "             pre_dispatch='2*n_jobs', refit=True, return_train_score=False,\n",
      "             scoring=None, verbose=0)\n",
      "0.8599454550284076\n",
      "0.01\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import Lasso\n",
    "alphas = np.array([20,10,5,1,1e-2,1e-3,1e-4,1e-8,1e-10,1e-15])\n",
    "model2 = Lasso()\n",
    "grid2 = GridSearchCV(estimator=model2, param_grid=dict(alpha=alphas),cv=5)\n",
    "grid2.fit(X_trainstd, y_trainctl)\n",
    "print(grid2)\n",
    "print(grid2.best_score_)\n",
    "print(grid2.best_estimator_.alpha)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R^2 for training set:\n",
      "0.895691196348256\n",
      "--------------------------------------------------\n",
      "R^2 for test set:\n",
      "0.8994574721120392\n",
      "--------------------------------------------------\n",
      "RSS: 126.94\n",
      "R^2 for training set:\n",
      "0.895691196348256\n",
      "--------------------------------------------------\n",
      "R^2 for test set:\n",
      "0.8994574721120392\n",
      "--------------------------------------------------\n",
      "RSS: 126.94\n"
     ]
    }
   ],
   "source": [
    "lasso1 = Lasso(alpha=0.01)\n",
    "lasso1.fit(X_trainstd, y_trainctl)\n",
    "print (\"R^2 for training set:\"),\n",
    "print (lasso1.score(X_trainstd, y_trainctl))\n",
    "\n",
    "print ('-'*50)\n",
    "\n",
    "print (\"R^2 for test set:\"),\n",
    "print (lasso1.score(X_teststd, y_testctl))\n",
    "\n",
    "print ('-'*50)\n",
    "\n",
    "print (\"RSS: %.2f\" % np.sum((lasso1.predict(X_teststd) - y_testctl) ** 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coefficient</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>TV</th>\n",
       "      <td>3.830300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>radio</th>\n",
       "      <td>2.802563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>newspaper</th>\n",
       "      <td>0.051436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>intercept</th>\n",
       "      <td>0.019438</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           coefficient\n",
       "TV            3.830300\n",
       "radio         2.802563\n",
       "newspaper     0.051436\n",
       "intercept     0.019438"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>coefficient</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>TV</th>\n",
       "      <td>3.830300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>radio</th>\n",
       "      <td>2.802563</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>newspaper</th>\n",
       "      <td>0.051436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>intercept</th>\n",
       "      <td>0.019438</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           coefficient\n",
       "TV            3.830300\n",
       "radio         2.802563\n",
       "newspaper     0.051436\n",
       "intercept     0.019438"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_form(lasso1, colnames)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Lasso is better"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
